module.exports = {
    // 数据的插入
    add(collObj, data){
        return new Promise((resolve,reject)=>{
            collObj.insertMany(data,(err)=>{
                if(!err){
                    resolve()
                }else{
                    reject(err)
                }
            })
        })
    },
    // 数据的删除
    remove(collObj, where, num=1){
        const type = num === 1 ? "deleteOne" : "deleteMany";
        // let type="";
        // if(num === 1){
        //     type = "deleteOne"
        // }else{
        //     type = "deleteMany"
        // }
        return new Promise((resolve,reject)=>{
            collObj[type](where).exec((err)=>{
                if(!err){
                    resolve()
                }else{
                    reject(err)
                }
            })
        })
    },
    // 数据的修改
    set(collObj, where, data, num=1){
        const type = num === 1 ? "updateOne" : "updateMany";
        return new Promise((resolve,reject)=>{
            collObj[type](where, data).exec((err)=>{
                if(!err){
                    resolve()
                }else{
                    reject(err)
                }
            })
        })
    },
    // 数据的默认查询：有条件就精准查询，没条件就查询所有
    get(collObj, where={}){
        return new Promise((resolve,reject)=>{
            collObj.find(where, {_id:0,__v:0}).exec((err,data)=>{
                if(!err){
                    resolve(data)
                }else{
                    reject(err)
                }
            })
        })
    },
    // 数据的排序查询
    getSort(collObj, s, where={}){
        return new Promise((resolve,reject)=>{
            collObj.find(where, {_id:0,__v:0}).sort(s).exec((err,data)=>{
                if(!err){
                    resolve(data)
                }else{
                    reject(err)
                }
            })
        })
    },
    // 数据的分页查询:页码，单页数量
    getPage(collObj, index=0, num=1, where={}){
        return new Promise((resolve,reject)=>{
            collObj.find(where, {_id:0,__v:0}).limit(num).skip(index*num).exec((err,data)=>{
                if(!err){
                    resolve(data)
                }else{
                    reject(err)
                }
            })
        })
    },
    // 数据的分类查询
    getKind(collObj, filed){
        return new Promise((resolve,reject)=>{
            collObj.distinct(filed).exec((err,data)=>{
                if(!err){
                    resolve(data)
                }else{
                    reject(err)
                }
            })
        })
    },
    // 集合内数据总数量查询
    getCount(collObj){
        return new Promise((resolve,reject)=>{
            collObj.countDocuments().exec((err,data)=>{
                if(!err){
                    resolve(data)
                }else{
                    reject(err)
                }
            })
        })
    },
    // 数据的分页排序查询
    getPageSort(collObj, s, index=0, num=1, where={}){
        return new Promise((resolve,reject)=>{
            collObj.find(where, {_id:0,__v:0}).limit(num).skip(index*num).sort(s).exec((err,data)=>{
                if(!err){
                    resolve(data)
                }else{
                    reject(err)
                }
            })
        })
    },
    // 数据的排序分页查询
    getSortPage(collObj, s, index=0, num=1, where={}){
        return new Promise((resolve,reject)=>{
            collObj.find(where, {_id:0,__v:0}).sort(s).limit(num).skip(index*num).exec((err,data)=>{
                if(!err){
                    resolve(data)
                }else{
                    reject(err)
                }
            })
        })
    }
}


// var obj = {
//     a:10,b:20,c:30,name:"admin"
// }
// var name = "b";
// // obj.a       //  10
// // obj.b       //  20
// obj[name]

